Input devices are used to provide information to a variety of software applications running on computing systems. For example, keyboards are often used to provide input for word processor applications, spreadsheet applications, database applications, internet applications, etc. Typically, input from a keyboard is routed through an operating system and then to the software application. For example, a device driver associated with the keyboard may receive the input and route the input to the application. The software application may then perform additional processing of the input. For example, an application may correct a misspelled word or may perform an action in response to a key character combination. Due to the large amount of software applications that exist today and the different types of data provided by various input devices, there are many different ways that applications process input.